package com.cysoft.third.echarts.component.dataZoom.slider;

/**
 * @author 玖零
 * @version v0.0.1
 * @project cysoft-third-echarts
 * @package com.cysoft.third.echarts.component.dataZoom.slider
 * @date 2025/3/13 01:22
 * @desc
 */
public class DataZoomSlider {

    /**
     * 组件类型，固定为滑动条型，标识该组件为滑动条型数据区域缩放组件。
     */
    private String type = "slider";
    /**
     * 组件 ID。默认不指定，指定则可用于在 option 或者 API 中引用组件。
     * 通过设置唯一 ID，可以方便后续操作中精准控制该组件。
     */
    private String id;
    /**
     * 是否显示组件。设置为 false 时组件不显示，但数据过滤功能仍存在。
     * 默认为 true，表示显示组件。
     */
    private Boolean show = true;
    /**
     * 组件的背景颜色，默认透明（rgba(47,69,84,0)）。
     * 支持使用 RGB、RGBA、十六进制等颜色格式。
     */
    private String backgroundColor = "rgba(47,69,84,0)";
    /**
     * 数据阴影的样式配置。用于显示数据的分布趋势，可配置线条和填充样式。
     */
    private DataBackground dataBackground;
    /**
     * 选中部分数据阴影的样式配置。从 v5.0.0 开始支持，可配置选中区域的线条和填充样式。
     */
    private SelectedDataBackground selectedDataBackground;
    /**
     * 选中范围的填充颜色。默认使用半透明蓝色（rgba(167,183,204,0.4)）。
     */
    private String fillerColor = "rgba(167,183,204,0.4)";
    /**
     * 组件的边框颜色。默认使用浅灰色（#d2dbee）。
     */
    private String borderColor = "#d2dbee";
    /**
     * 组件的圆角半径，单位为 px。支持传入单个数值或数组分别指定四个角的半径。
     * 例如：borderRadius: 5（统一设置四个角）；borderRadius: [5, 5, 0, 0]（顺时针左上、右上、右下、左下）。
     */
    private Object borderRadius = 3;
    /**
     * 两侧缩放手柄的图标形状。支持路径字符串、图片 URL 或 dataURI。
     * 默认使用内置的箭头图标。
     */
    private String handleIcon = "M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z";
    /**
     * 控制手柄的尺寸。可以是像素值或相对于组件宽度的百分比，默认与组件宽度相同。
     * 例如：handleSize: 20（像素）；handleSize: "80%"（百分比）。
     */
    private Object handleSize = "100%";
    /**
     * 两侧缩放手柄的样式配置。包括颜色、描边、阴影等属性。
     */
    private HandleStyle handleStyle;
    /**
     * 手柄附近文字的样式设置。从 v5.6.0 开始支持，可配置文字的显示状态。
     */
    private HandleLabel handleLabel;
    /**
     * 移动手柄中间的图标形状。支持路径字符串、图片 URL 或 dataURI。
     * 默认使用内置的移动图标。
     */
    private String moveHandleIcon = "M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z";
    /**
     * 移动手柄的尺寸高度。从 v5.0.0 开始支持，默认值为 7。
     */
    private Integer moveHandleSize = 7;
    /**
     * 移动手柄的样式配置。包括颜色、描边、阴影等属性。
     */
    private MoveHandleStyle moveHandleStyle;
    /**
     * 显示标签的小数精度。默认根据数据自动决定，也可设置为具体数值或 'auto'。
     */
    private Object labelPrecision = "auto";
    /**
     * 显示的标签的格式化器。支持字符串模板或回调函数，用于自定义标签内容。
     * 例如：labelFormatter: "{value}°C"（字符串模板）；labelFormatter: function(value) { return value * 2; }（回调函数）。
     */
    private Object labelFormatter;
    /**
     * 是否显示拖拽时的详细数值信息。默认显示（true），拖拽时会显示当前数值。
     */
    private Boolean showDetail = true;
    /**
     * 是否在组件中显示数据阴影。默认自动（'auto'），可根据数据自动决定是否显示。
     */
    private String showDataShadow = "auto";
    /**
     * 拖动时是否实时更新系列的视图。默认实时更新（true），设置为 false 时仅在拖拽结束时更新。
     */
    private Boolean realtime = true;
    /**
     * 组件中文字的样式配置。包括颜色、字体、阴影等属性。
     */
    private TextStyle textStyle;
    /**
     * 设置组件控制的 x 轴（直角坐标系中的概念）。
     * 可指定单个轴索引或多个轴索引数组，默认控制第一个 x 轴（当 orient 为 'horizontal' 时）。
     */
    private Integer[] xAxisIndex;
    /**
     * 设置组件控制的 y 轴（直角坐标系中的概念）。
     * 可指定单个轴索引或多个轴索引数组，默认控制第一个 y 轴（当 orient 为 'vertical' 时）。
     */
    private Integer[] yAxisIndex;
    /**
     * 设置组件控制的 radius 轴（极坐标系中的概念）。
     * 可指定单个轴索引或多个轴索引数组。
     */
    private Integer[] radiusAxisIndex;
    /**
     * 设置组件控制的 angle 轴（极坐标系中的概念）。
     * 可指定单个轴索引或多个轴索引数组。
     */
    private Integer[] angleAxisIndex;
    /**
     * 数据过滤模式。可选值：
     * - 'filter'：过滤数据窗口外的数据，影响其他轴的范围。
     * - 'weakFilter'：弱过滤，仅当数据项所有维度都在窗口外时过滤。
     * - 'empty'：将数据窗口外的数据设置为空，不影响其他轴。
     * - 'none'：不过滤数据，仅改变数轴范围。
     * 默认为 'filter'。
     */
    private String filterMode = "filter";
    /**
     * 数据窗口范围的起始百分比（0~100）。与 end 共同定义数据窗口范围。
     * 设置后，startValue 失效。
     */
    private Integer start;
    /**
     * 数据窗口范围的结束百分比（0~100）。与 start 共同定义数据窗口范围，默认值为 100。
     * 设置后，endValue 失效。
     */
    private Integer end = 100;
    /**
     * 数据窗口范围的起始数值。可设置为数字、字符串或日期类型。
     * 若轴类型为 category，可设置为数组索引或数组值本身（内部自动转换为索引）。
     */
    private Object startValue;
    /**
     * 数据窗口范围的结束数值。可设置为数字、字符串或日期类型。
     * 若轴类型为 category，可设置为数组索引或数组值本身（内部自动转换为索引）。
     */
    private Object endValue;
    /**
     * 限制窗口大小的最小值（百分比值）。取值范围 0~100，设置后 minValueSpan 失效。
     */
    private Integer minSpan;
    /**
     * 限制窗口大小的最大值（百分比值）。取值范围 0~100，设置后 maxValueSpan 失效。
     */
    private Integer maxSpan;
    /**
     * 限制窗口大小的最小值（实际数值）。例如时间轴上可设置为毫秒数。
     */
    private Object minValueSpan;
    /**
     * 限制窗口大小的最大值（实际数值）。例如时间轴上可设置为毫秒数。
     */
    private Object maxValueSpan;
    /**
     * 组件的布局方式。可选 'horizontal'（水平）或 'vertical'（竖直），默认水平布局。
     */
    private String orient = "horizontal";
    /**
     * 是否锁定选择区域的大小。设置为 true 时只能平移，不能缩放。
     */
    private Boolean zoomLock;
    /**
     * 设置触发视图刷新的频率，单位为毫秒（ms）。默认值为 100，可优化拖拽时的性能。
     */
    private Integer throttle = 100;
    /**
     * 定义数据窗口范围的模式。形式为 [rangeModeForStart, rangeModeForEnd]，每项可选 'value' 或 'percent'。
     * 通常无需手动设置，由 start/startValue 和 end/endValue 自动决定。
     */
    private String[] rangeMode;
    /**
     * 所有图形的 zlevel 值。用于 Canvas 分层，不同 zlevel 值的图形会被绘制在不同的层中。
     */
    private Integer zlevel;
    /**
     * 组件的所有图形的 z 值。控制图形的前后顺序，z 值小的图形会被 z 值大的覆盖。
     */
    private Integer z = 2;
    /**
     * 组件离容器左侧的距离。支持像素值、百分比或 'left', 'center', 'right'，默认自适应。
     */
    private Object left = "auto";
    /**
     * 组件离容器上侧的距离。支持像素值、百分比或 'top', 'middle', 'bottom'，默认自适应。
     */
    private Object top = "auto";
    /**
     * 组件离容器右侧的距离。支持像素值或百分比，默认自适应。
     */
    private Object right = "auto";
    /**
     * 组件离容器下侧的距离。支持像素值或百分比，默认自适应。
     */
    private Object bottom = "auto";
    /**
     * 组件的宽度。竖直布局默认 30，水平布局默认自适应。优先级高于 left/right。
     */
    private Object width;
    /**
     * 组件的高度。水平布局默认 30，竖直布局默认自适应。优先级高于 top/bottom。
     */
    private Object height;
    /**
     * 是否开启刷选功能。从 v5.0.0 开始支持，按住鼠标左键可框选数据区域。
     */
    private Boolean brushSelect = true;
    /**
     * 刷选框的样式配置。包括颜色、描边、阴影等属性。
     */
    private BrushStyle brushStyle;
    /**
     * 高亮样式设置。从 v5.0.0 开始支持，可配置手柄和移动手柄的高亮样式。
     */
    private Emphasis emphasis;
}
